home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.92 / crossfir / crossfire-0.92.5 / include / re-cmp.h < prev    next >
C/C++ Source or Header  |  1996-07-24  |  2KB  |  70 lines

  1. /* re-cmp.h
  2.  * Datastructures for representing a subset of regular expressions.
  3.  *
  4.  * Author: Kjetil T. Homme <kjetilho@ifi.uio.no> May 1993
  5.  */
  6.  
  7. /*   C o n f i g u r a t i o n
  8.  */
  9.  
  10. #define SAFE_CHECKS    /* Regexp's with syntax errors will core dump if
  11.              * this is undefined.
  12.              */
  13.  
  14. #define RE_TOKEN_MAX 64    /* Max amount of tokens in a regexp.
  15.              * Each token uses ~264 bytes. They are allocated
  16.              * as needed, but never de-allocated.
  17.              * E.g. [A-Za-z0-9_] counts as one token, so 64
  18.              * should be plenty for most purposes.
  19.              */
  20.  
  21. /*   D o   n o t   c h a n g e    b e l o w
  22.  */
  23.  
  24. #ifdef uchar
  25. #    undef uchar
  26. #endif
  27. #ifdef Boolean
  28. #    undef Boolean
  29. #endif
  30. #ifdef True
  31. #    undef True
  32. #endif
  33. #ifdef False
  34. #    undef False
  35. #endif
  36.  
  37. #define uchar    unsigned char
  38. #define Boolean    uchar
  39. #define True    1    /* Changing this value will break the code */
  40. #define False    0
  41.  
  42. typedef enum {
  43.     sel_any,         /* corresponds to e.g. .        */
  44.     sel_end,        /*         "           $        */
  45.     sel_single,     /*         "           q        */
  46.     sel_range,      /*         "           [A-F]        */
  47.     sel_array,      /*         "           [AF-RqO-T]    */
  48.     sel_not_single,    /*         "           [^f]        */
  49.     sel_not_range    /*       "           [^A-F]        */
  50. } selection_type;
  51.  
  52. typedef enum {
  53.     rep_once,        /* corresponds to no meta-char    */
  54.     rep_once_or_more,    /*        "       +        */
  55.     rep_null_or_once,    /*        "       ?        */
  56.     rep_null_or_more    /*        "       *        */
  57. } repetetion_type;
  58.  
  59. typedef struct {
  60.     selection_type type;
  61.     union {
  62.     uchar single;
  63.     struct {
  64.         uchar low, high;
  65.     } range;
  66.     Boolean array[UCHAR_MAX];
  67.     } u;
  68.     repetetion_type repeat;
  69. } selection;
  70.